package com.example.leetcode.prcatice;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 给你一个字符串数组 words ，数组中的每个字符串都可以看作是一个单词。请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词。
 *
 * 如果你可以删除 words[j] 最左侧和/或最右侧的若干字符得到 word[i] ，那么字符串 words[i] 就是 words[j] 的一个子字符串。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/string-matching-in-an-array
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test1408 {

    public List<String> stringMatching(String[] words) {
        List<String> result = new ArrayList<>();

        List<String> sortList = Arrays.stream(words).sorted(Comparator.comparing(String::length)).collect(Collectors.toList());
        for (int i =0;i<sortList.size() -1;i++){
            for (int j = i+1;j<sortList.size();j++){
                String now = sortList.get(i);
                String next = sortList.get(j);
                if (next.length() != now.length()){
                    if (next.contains(now)){
                        result.add(now);
                        break;
                    }
                }
            }
        }
        return result;
    }
}
